#ifndef POLYNOMIAL_H
#define POLYNOMIAL_H

#include <stdlib.h>
#include <string.h>
#include <ctype.h>

typedef struct PolyNode
{
    int coe; // 系数
    int deg; // 次数
    struct PolyNode* next;
} PolyNode;

typedef struct Polynomial
{
    PolyNode* ptr; // 头指针
    char variable; // 变元名
} Polynomial;

// 初始化多项式
Polynomial* InitPolynomial();

// 析构多项式
void DeletePolynomial(Polynomial* p);

// 用字符串给多项式赋值
int SetPolynomial(Polynomial* p, const char* s);

// 多项式求和(需要析构返回值)
Polynomial* AddPolynomial(Polynomial* a, Polynomial* b);

// 多项式求积(需要析构返回值)
Polynomial* MultPolynomial(Polynomial* a, Polynomial* b);

// 多项式转字符串(使用后需析构返回值)
char* PolynomialToString(Polynomial* p);

// 判断是否为变量
int IsVariable(char ch);

// 判断是否为数字
int IsDigit(char ch);

// 判断是否为操作符
int IsOperator(char ch);

// 判断是否为指数符
int IsDegree(char ch);


#endif // POLYNOMIAL_H
